home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / scope / 101-125 / scopedisk122 / popup / source / popupmenu.h < prev    next >
C/C++ Source or Header  |  1995-03-19  |  3KB  |  106 lines

  1. #define ABSEXECBASE ((struct ExecBase **)4L)
  2.  
  3. /* this is for lattice bug with 16-bit ints */
  4. #undef    RMBTRAP
  5. #define RMBTRAP 0x00010000L
  6.  
  7. /* this is for missing limits */
  8. #define WORD_MIN   SHRT_MIN
  9. #define WORD_MAX   SHRT_MAX
  10. #define UWORD_MIN  USHRT_MIN
  11. #define UWORD_MAX  USHRT_MAX
  12.  
  13. /* this is for bug in AddSemaphore */
  14. #undef AddSemaphore
  15. #define AddSemaphore(SS) InitSemaphore(SS),\
  16.              Enqueue(&((*ABSEXECBASE)->SemaphoreList),\
  17.                  &((SS)->ss_Link))
  18.  
  19. /* this is a fake intuimessage-class used to quit the popupmenu program */
  20. #define QUITPOPUPMENU       0
  21.  
  22. #define HIGHLIGHTON       0
  23. #define HIGHLIGHTOFF       1
  24.  
  25. #define BORDERSIZE       2
  26.  
  27. #define AND          &&
  28. #define OR          ||
  29.  
  30. #define ITEMWINDOW 0
  31. #define SUBWINDOW  SHRT_MAX
  32. /* used for drawing commandkeys */
  33. #define LORESSCREEN      TRUE
  34. #define HIRESSCREEN      FALSE
  35.  
  36. /* used by DrawMenuItem */
  37. #define SELECTFILL   1
  38. #define ITEMFILL     0
  39. #define CLEAROLD     TRUE
  40. #define DONTCLEAROLD FALSE
  41.  
  42. struct WindowSize {
  43.   WORD Left, Top, Right, Bottom;
  44. };
  45.  
  46. union FillTypes {
  47.   APTR            APTR;
  48.   struct IntuiText *IText;
  49.   struct Image       *Image;
  50. };
  51.  
  52. struct WindowData {
  53.   BOOL    BitMapOk;
  54.   WORD    LeftEdge, TopEdge;
  55.   WORD    RightEdge, Bottom;
  56.   WORD    Width, Height;
  57.   WORD    TopValue, LeftValue;
  58.   struct MenuItem *Items;
  59.   struct BitMap Bm;
  60. };
  61.  
  62. struct SignalData {
  63.   struct Task *PopUpMenuTask;
  64.   LONGBITS MenuUpSig;
  65.   LONGBITS MenuDownSig;
  66.   LONGBITS MouseMovedSig;
  67.   LONGBITS SelectDownSig;
  68.   BOOL    Down;
  69. };
  70.  
  71. /* My functioms */
  72.  
  73. VOID           WriteAndClose(STRPTR,ULONG);
  74. VOID           PopUpMainLoop(struct SignalData *, struct MsgPort *);
  75. VOID           PopUpMenu(struct SignalData *);
  76. VOID           QueueTimer(VOID);
  77. VOID           InitGlobals(VOID);
  78. BOOL           OpenMenuWindow(WORD);
  79. VOID           HighLightItem(struct MenuItem *, struct WindowData *, UWORD);
  80. VOID           HighLightCurrItemBehind(UWORD);
  81. struct MenuItem   *FindMouseItem(struct WindowData *);
  82. VOID           SelectItem(VOID);
  83. VOID           OpenItemWindow(struct WindowData *, struct WindowData *, WORD, UWORD);
  84. VOID           CheckItemSize(struct WindowSize *,struct MenuItem *,LONG);
  85. VOID           CloseItemWindow(struct WindowData *);
  86. VOID           ToggleMenu(UWORD,struct Menu *);
  87. VOID           DrawAllItems(struct WindowData *);
  88. VOID           DrawMenuItem(struct MenuItem *, struct WindowData *, UWORD, BOOL);
  89. struct Menu      *FindMenuPtr(UWORD);
  90. WORDBITS       FinalSelect(VOID);
  91. VOID           CheckMark(struct MenuItem *,struct MenuItem *);
  92. UWORD           FindItemNr(struct MenuItem *, struct MenuItem *);
  93. VOID           TellWindow(WORDBITS);
  94. BOOL           BuildBitMap(struct WindowData *);
  95. VOID           ClearWindow(struct WindowData *);
  96. VOID           RemoveBitMap(struct WindowData *);
  97. BOOL           MouseInWindow(struct WindowData *);
  98. WORD           SendMessage(struct MsgPort *);
  99. struct IntuiMessage *BuildIntuiMsg(struct MsgPort *, ULONG, UWORD);
  100. struct InputEvent *PopUpHandler(struct InputEvent *,struct SignalData *);
  101. ULONG           Mystrlen(STRPTR);
  102. VOID           SwapBits(struct WindowData *);
  103.  
  104. #define DeleteStdIO(IOReq) FreeMem((IOReq),sizeof(struct IOStdReq))
  105.  
  106.